package org.springblade.modules.repair.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import org.springblade.modules.repair.entity.MaintainPartsWorkSku;
import org.springblade.modules.repair.entity.PartAddress;
import org.springblade.modules.repair.vo.part.PartWordUrlVo;
import org.wildfly.common.annotation.NotNull;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Date 9:07 2022/6/29
 * @Description {
 *   部件更换
 * }
 * @Author lsay
 **/
@NoArgsConstructor
@Data
public class PartsWorkSaveDTO {

	/**
	 * 电梯id集合
	 */
	private List<Long> elevatorIds;

	/**
	 * 工单id
	 */
	private Long planId;

	/**
	 * 来源工单id
	 */
	private Long fromPlanId;

	/**
	 * 电梯id
	 */
	@NonNull
	private Long elevatorId;

	/**
	 * 电梯状态： 1-正常,2-停梯
	 */
	private Integer elevatorStop;

	/**
	 * 配件明细
	 */
	@NotNull
	private List<PartsList> partsList;

	@NoArgsConstructor
	@Data
	public static class PartsList {

		private Long id;

		/**
		 * 部件id集合
		 */
		@NonNull
		private String partsId;

		/**
		 * 部件名称集合
		 */
		@NonNull
		private String partsName;

		/**
		 * 部件关联的类目id
		 */
		private Long categoryId;

		/**
		 * 部件关联的skuId
		 */
		private Long skuId;

		/**
		 * 层站结构id集合
		 */
		private String floorStandIds;

		/**
		 * 层站结构名称集合
		 */
		private String floorStandNames;

		/**
		 * 部件名称
		 */
		private String name;

		/**
		 * 部件型号
		 */
		private String partsModel;

		/**
		 * 配件信息
		 */
		private String partsInfo;

		/**
		 * 关联sku配件信息
		 */
		private Map<String, Object> skuPartsInfo;

		/**
		 * 部件数量
		 */
		@NonNull
		private Integer num;

		/**
		 * 描述
		 */
		private String desc;

		/**
		 * 描述图片和视频
		 */
		@TableField(value = "other_url",typeHandler = JacksonTypeHandler.class)
		private List<HashMap<String,String>> otherUrl;

		/**
		 * word的附件URL
		 */
		@TableField(typeHandler = JacksonTypeHandler.class)
		private List<PartWordUrlVo> extWordUrl;

		/**
		 * 2025-06 新增单位名称值
		 */
		private String unitNameValue;

		private List<MaintainPartsWorkSku> skuList;
	}

	/**
	 * 报价分组id
	 */
	private Long groupId;

	/**
	 * 跳过流程
	 */
	private Boolean skip;

	/**
	 * 操作来源
	 */
	private Integer source;


	/**
	 * 收货地址
	 */
	private PartAddress partAddress;

	@ApiModelProperty("维修记录配件id")
	private Long malPartId;

	/**
	 * 紧急程度
	 */
	private Integer emerProcType;

	/**
	 * 工单类型
	 */
	private Integer workOrderType;

	/**
	 * 维修详情id
	 */
	private Long malWorksId;

	/**
	 * 任务类型描述
	 */
	private String planTypeDesc;

	/**
	 * 维修工单id
	 */
	private Long wxPlanId;

	@ApiModelProperty("电梯铭牌")
	private PartWordUrlVo nameAttachment;
}
